[アップデート]Amazon CloudWatch Logsでログデータに含まれた機密情報を保護出来るようになりました #reinvent
こんにちは、AWS事業本部@福岡オフィスのべこみん(@beco_minn)です。
遂にAWS re:Invent 2022が始まりましたね。それに合わせてたくさんのアップデートが出てきました。
本記事ではそのうちの一つ、「Amazon CloudWatch Logsでの転送中の機密データ保護」についてまとめます。
ざっくりまとめ
- Amazon CloudWatch Logsで転送中の機密情報が含まれたログデータを保護(マスク)することが出来るようになった
- HIPAAやGDPR、PCI-DSS、FedRAMPに則った保護が可能
- 監査結果をAmazon CloudWatch Logs、Amazon Kinesis Data Firehose、Amazon S3に送ることも可能
logs:Unmask
権限を持つユーザーであればマスクを外した状態でログデータを確認することも可能- 住所や運転免許証番号などは記事執筆時点(2022/11/28)で日本語未対応
アップデート内容
Amazon CloudWatch Logsで転送中のログデータに含まれる機密情報を保護(マスク)する機能が追加されました。
この機能は任意のロググループを作成後、追加の操作を行うことで有効化することが可能です。有効化の操作はマネジメントコンソールからだけでなくAWS CLIでも行うことが出来ます。
この機能の公式ドキュメントは下記です。記事執筆時点では英語版のみです。
どんなデータタイプを保護出来るのか
保護が可能なデータタイプは下記ページにまとめられています。
上記ページに記載されているデータタイプは下表のとおりです。
データ | 分類 |
---|---|
Address | Personal |
AwsSecretKey | Credentials |
CreditCardExpiration | Financial |
CreditCardNumber | Financial |
CreditCardSecurityCode | Financial |
EmailAddress | Personal |
IpAddress | Personal |
LatLong | Personal |
Name | Personal |
OpenSshPrivateKey | Credentials |
PgpPrivateKey | Credentials |
PkcsPrivateKey | Credentials |
PuttyPrivateKey | Credentials |
VehicleIdentificationNumber | Personal |
また、国別で対応しているデータもあります。
データ | 分類 | 対応国名コード |
---|---|---|
BankAccountNumber | Financial | DE, ES, FR, GB, IT |
CepCode | Personal | BR |
Cnpj | Personal | BR |
CpfCode | Personal | BR |
DriversLicense | Personal | AT, AU, BE, BG, CA, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, HR, HU, IE, IT, LT, LU, LV, MT, NL, PL, PT, RO, SE, SI, SK, US |
DrugEnforcementAgencyNumber | Health | US |
ElectoralRollNumber | Personal | GB |
HealthInsuranceCardNumber | Health | EU |
HealthInsuranceClaimNumber | Health | US |
HealthInsuranceNumber | Health | FR |
HealthcareProcedureCode | Health | US |
IndividualTaxIdentificationNumber | Personal | US |
InseeCode | Personal | FR |
MedicareBeneficiaryNumber | Health | US |
NationalDrugCode | Health | US |
NationalIdentificationNumber | Personal | DE, ES, IT |
NationalInsuranceNumber | Personal | GB |
NationalProviderId | Health | US |
NhsNumber | Health | GB |
NieNumber | Personal | ES |
NifNumber | Personal | ES |
PassportNumber | Personal | CA, DE, ES, FR, GB, IT, US |
PermanentResidenceNumber | Personal | CA |
PersonalHealthNumber | Health | CA |
PhoneNumber | Personal | BR, DE, ES, FR, GB, IT, US |
PostalCode | Personal | CA |
RgNumber | Personal | BR |
SocialInsuranceNumber | Personal | CA |
Ssn | Personal | ES, US |
TaxId | Personal | DE, ES, FR, GB |
ZipCode | Personal | US |
やってみた
今回はマネジメントコンソールから有効化してみました。
この機能はロググループ作成時には設定出来ず、作成されたロググループに有効化する仕様になっています。そのため、今回は適当なロググループを作成します。
ロググループ作成後、ロググループ一覧からアクション -> Create data protection policyを選択します。
すると、このようなData protection機能の設定画面に遷移します。
設定可能な項目は主に保護対象のデータタイプ。また、監査結果をどこかに保存したい場合、Amazon CloudWatch Logs、Amazon Kinesis Data Firehose、Amazon S3のいずれかに送信することが可能です。
今回は監査結果は保存せず、保護対象のデータとしてAddress、AWSSecretKey、IPAddressを選んでみました。
それでは手動でログストリームを作成し、ログイベントを流してみます。まずはIPAddressから。
ちゃんとマスクされて表示されていますね。(0.0.0.0を流す前に「test start」というログを流しています。)
その後、Addressに引っ掛けるために以下の値を送ってみました。
- 〒812-0011 福岡県福岡市博多区博多駅前2丁目20−1 大博多ビル 11F(クラスメソッド福岡オフィスの住所です。)
- 1600 Pennsylvania Avenue NW, Washington, D.C. 20500 U.S.A.(ホワイトハウスの住所らしいです。)
結果はこんな感じ。どうやら日本語には対応してないようです。
最後にAWSSecretKeyを試したのですが、マスクされませんでした。。マスク出来た方は教えてください。
また、機密情報が含まれていると検知されたログの件数はロググループのData protectionタブで確認することが出来ます。
追記: ロググループ一覧にアラートも出てました。
マスクを外した状態で保護されたログデータを見てみた
マスクされたログデータの中身を見る手段も用意されています。
logs:Unmask
という権限を持つユーザーで操作を行うことでマスクされていない状態でログデータを見ることが可能です。
マネジメントコンソール上であれば、Display -> Temporally unmask protected dataを選択することでマスクを外してログデータを見ることが出来ます。
また、再度マスクすることも可能です。
公式ドキュメントは下記
まとめ
今回のアップデート、結構望まれていたものだったのではないでしょうか。うっかりログに機密データを流してしまった場合にすぐ気付ける良い機能ですね。
ただし、多くのデータタイプで日本語未対応のため、まだ使用場面はかなり限られそうですが。。。
本記事がどなたかのお役に立てれば幸いです。
以上、べこみんでした。